﻿#region COPYRIGHT© 2005-2013 Phillip Clark. All rights reserved.

// For licensing information see License.txt (MIT style licensing).

#endregion

using System;

namespace FlitBit.Parse
{
	/// <summary>
	///   Kinds of character matches.
	/// </summary>
	[Flags]
	internal enum CharMatchKind
	{
		/// <summary>
		///   Default value; indicates an exact character match.
		/// </summary>
		Exact = 0,

		/// <summary>
		///   Indicates a match on a character, letter characters are matched case-insensitive.
		/// </summary>
		CaseInsensitive = 1,

		/// <summary>
		///   Indicates a match against a unicode category.
		/// </summary>
		UnicodeCategory = 2,

		/// <summary>
		///   Indicates a match against any character except an exact character.
		/// </summary>
		Not = 4, // implies Not | Exact
		/// <summary>
		///   Indicates a match against a range of characters.
		/// </summary>
		Range = 8,

		/// <summary>
		///   Indicates a match against any but a range of characters.
		/// </summary>
		NotRange = Not | Range,

		/// <summary>
		///   Indicates a match against any character except a character and it's opposing case if it's a letter.
		/// </summary>
		NotCaseInsensitive = Not | CaseInsensitive,

		/// <summary>
		///   Indicates a match against any character except those that are members of the unicode category.
		/// </summary>
		NotUnicodeCategory = Not | UnicodeCategory,
	}
}